9x9 Tarek 1.txt
Order 3: digits 9; houses 27, cells 81.
Grid.grid1: initial copying
pending={a1, a6, a7, b2, b5, c3, c4, c9, d3, d9, e2, e8, f1, f7, g1, g6, g7, h5, h8, i3, i4, i9}
deduce.grid1: naked-singles
deduce.grid1: hidden-singles
deduce.grid1: naked-pairs
two's heap=g9 {1|4}, c1 {5|9}.
grid1
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
|
|
| 1
| 7
|
|
|
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
|
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid1 → grid2: c1 guess 5 ∈ {5|9}
pending={c1}
deduce.grid2: naked-singles
deduce.grid2: hidden-singles
deduce.grid2: naked-pairs
two's heap=g9 {1|4}, c7 {4|8}.
grid2
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
| 5
|
| 1
| 7
|
|
|
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
|
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid2 → grid3: c7 guess 4 ∈ {4|8}
pending={c7}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3.box3. a9 is 8 by hidden-single.
pending={a9}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3.col9. h9 is 3 by hidden-single.
pending={h9}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3.rowi. i6 is 3 by hidden-single.
pending={i6}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3.box9. i8 is 9 by hidden-single.
pending={i8}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3.rowi. i2 is 4 by hidden-single.
pending={i2}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3.rowi. i5 is 6 by hidden-single.
pending={i5}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3: naked-pairs
two's heap=g9 {1|4}, a4 {4|5}, h4 {1|5}, i7 {1|7}, g3 {5|7}, a5 {2|5}, c8 {3|6}, e7 {2|8}, d7 {5|8}, c5 {8|9}, f9 {6|9}, c6 {6|8}, b9 {1|6}, h6 {5|7}, i1 {1|7}, c2 {3|9}.
grid3
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
| 8
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
| 5
|
| 1
| 7
|
|
| 4
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 3
|
| i
|
| 4
| 8
| 2
| 6
| 3
|
| 9
| 5
|
backtrack.grid3 → grid4: a4 guess 4 ∈ {4|5}
pending={a4}
deduce.grid4: naked-singles
deduce.grid4: hidden-singles
deduce.grid4.rowb. b3 is 4 by hidden-single.
pending={b3}
deduce.grid4: naked-singles
deduce.grid4: hidden-singles
deduce.grid4: naked-pairs
two's heap=g9 {1|4}, i7 {1|7}, h4 {1|5}, a3 {3|7}, g3 {5|7}, a5 {2|5}, c8 {3|6}, e7 {2|8}, d7 {5|8}, c5 {8|9}, f9 {6|9}, c6 {6|8}, b9 {1|6}, h6 {5|7}, i1 {1|7}, c2 {3|9}.
grid4
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
| 4
|
| 1
| 9
|
| 8
|
| b
|
| 8
| 4
|
| 3
|
|
|
|
|
| c
| 5
|
| 1
| 7
|
|
| 4
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 3
|
| i
|
| 4
| 8
| 2
| 6
| 3
|
| 9
| 5
|
backtrack.grid4 → grid5: a3 guess 3 ∈ {3|7}
pending={a3}
deduce.grid5: naked-singles
- c2 is 9 by naked-single.
pending={c2}
- c5 is 8 by naked-single.
pending={c5}
- c6 is 6 by naked-single.
pending={c6}
- c8 is 3 by naked-single.
pending={c8}
deduce.grid5: hidden-singles
deduce.grid5.rowb. b4 is 9 by hidden-single.
pending={b4}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowe. e4 is 3 by hidden-single.
pending={e4}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowd. d2 is 3 by hidden-single.
pending={d2}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowg. g4 is 8 by hidden-single.
pending={g4}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowf. f6 is 8 by hidden-single.
pending={f6}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5: naked-pairs
two's heap=g9 {1|4}, b6 {2|5}, h4 {1|5}, i7 {1|7}, a2 {2|7}, a5 {2|5}, b9 {1|6}, b1 {2|7}, e7 {2|8}, f9 {6|9}, g3 {5|7}, a8 {5|7}, d6 {4|5}, h6 {5|7}, i1 {1|7}, d7 {5|8}.
grid5
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
| 3
| 4
|
| 1
| 9
|
| 8
|
| b
|
| 8
| 4
| 9
| 3
|
|
|
|
|
| c
| 5
| 9
| 1
| 7
| 8
| 6
| 4
| 3
| 2
|
| d
|
| 3
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
| 3
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
| 8
| 3
|
|
|
| g
| 3
|
|
| 8
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 3
|
| i
|
| 4
| 8
| 2
| 6
| 3
|
| 9
| 5
|
backtrack.grid5 → grid6: a2 guess 2 ∈ {2|7}
pending={a2}
deduce.grid6: naked-singles
- a5 is 5 by naked-single.
pending={a5}
- a8 is 7 by naked-single.
pending={a8}
- b1 is 7 by naked-single.
pending={b1}
- b6 is 2 by naked-single.
pending={b6}
- i1 is 1 by naked-single.
pending={i1}
- g2 is 7 by naked-single.
pending={g2}
- g3 is 5 by naked-single.
pending={g3}
- g5 is 1 by naked-single.
pending={g5}
- d5 is 9 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- d7 is 5 by naked-single.
pending={d7}
- b7 is 1 by naked-single.
pending={b7}
- b9 is 6 by naked-single.
pending={b9}
- b8 is 5 by naked-single.
pending={b8}
- d6 is 4 by naked-single.
pending={d6}
- d8 is 6 by naked-single.
pending={d8}
- d4 is 1 by naked-single.
pending={d4}
- e1 is 9 by naked-single.
pending={e1}
- e6 is 7 by naked-single.
pending={e6}
- e3 is 6 by naked-single.
pending={e3}
- e5 is 2 by naked-single.
pending={e5}
- e7 is 8 by naked-single.
pending={e7}
- e9 is 4 by naked-single.
pending={e9}
- f2 is 1 by naked-single.
pending={f2}
- f3 is 7 by naked-single.
pending={f3}
grid6 didn't work: naked-singles ran out of candidates.
…backtrack.grid5 again
backtrack.grid5 → grid7: a2 guess 7 ∈ {2|7}
pending={a2}
deduce.grid7: naked-singles
- a8 is 5 by naked-single.
pending={a8}
- a5 is 2 by naked-single.
pending={a5}
- b1 is 2 by naked-single.
pending={b1}
- b6 is 5 by naked-single.
pending={b6}
- d6 is 4 by naked-single.
pending={d6}
- d8 is 6 by naked-single.
pending={d8}
- b8 is 7 by naked-single.
pending={b8}
- b7 is 1 by naked-single.
pending={b7}
- b9 is 6 by naked-single.
pending={b9}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 8 by naked-single.
pending={e7}
- d7 is 5 by naked-single.
pending={d7}
- d4 is 1 by naked-single.
pending={d4}
- d5 is 9 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- e5 is 7 by naked-single.
pending={e5}
- e1 is 9 by naked-single.
pending={e1}
- e3 is 6 by naked-single.
pending={e3}
- e6 is 2 by naked-single.
pending={e6}
- e9 is 4 by naked-single.
pending={e9}
- f2 is 1 by naked-single.
pending={f2}
- f3 is 7 by naked-single.
pending={f3}
- f5 is 5 by naked-single.
pending={f5}
- f4 is 6 by naked-single.
pending={f4}
- f9 is 9 by naked-single.
pending={f9}
- g2 is 2 by naked-single.
pending={g2}
- g3 is 5 by naked-single.
pending={g3}
- g5 is 1 by naked-single.
pending={g5}
- g8 is 4 by naked-single.
pending={g8}
grid7 didn't work: naked-singles ran out of candidates.
…backtrack.grid5 again
grid5 didn't work: exhaustive search revealed no solution.
…backtrack.grid4 again
backtrack.grid4 → grid8: a3 guess 7 ∈ {3|7}
pending={a3}
deduce.grid8: naked-singles
- g3 is 5 by naked-single.
pending={g3}
deduce.grid8: hidden-singles
deduce.grid8.col3. e3 is 3 by hidden-single.
pending={e3}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowd. d4 is 3 by hidden-single.
pending={d4}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8: naked-pairs
two's heap=a2 {2|3}, h4 {1|5}, g9 {1|4}, a5 {2|5}, b9 {1|6}, c2 {3|9}, a8 {3|5}, c8 {3|6}, i1 {1|7}, i7 {1|7}, e7 {2|8}, f3 {6|9}, f9 {6|9}, c5 {8|9}, g4 {1|8}, h3 {6|9}, b1 {2|9}, c6 {6|8}, h6 {5|7}, d7 {5|8}.
Naked-pair {6|9} in cells {f3, f9, h3} contained within {rowf, col3}, updating cells {f2, f4, f5, f6, f8}:
- f2: {1|6|7|9} → {1|7}.
- f4: {1|5|6|8|9} → {1|5|8}.
- f5: {1|2|5|7|8|9} → {1|2|5|7|8}.
- f6: {2|5|6|7|8} → {2|5|7|8}.
- f8: {2|5|6} → {2|5}.
grid8
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
| 7
| 4
|
| 1
| 9
|
| 8
|
| b
|
| 8
| 4
|
| 3
|
|
|
|
|
| c
| 5
|
| 1
| 7
|
|
| 4
|
| 2
|
| d
|
|
| 2
| 3
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
| 5
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 3
|
| i
|
| 4
| 8
| 2
| 6
| 3
|
| 9
| 5
|
backtrack.grid8 → grid9: a2 guess 2 ∈ {2|3}
pending={a2}
deduce.grid9: naked-singles
- a5 is 5 by naked-single.
pending={a5}
- a8 is 3 by naked-single.
pending={a8}
- b1 is 9 by naked-single.
pending={b1}
- b4 is 6 by naked-single.
pending={b4}
- b6 is 2 by naked-single.
pending={b6}
- b9 is 1 by naked-single.
pending={b9}
- c2 is 3 by naked-single.
pending={c2}
- c6 is 8 by naked-single.
pending={c6}
- c5 is 9 by naked-single.
pending={c5}
- c8 is 6 by naked-single.
pending={c8}
- g9 is 4 by naked-single.
pending={g9}
deduce.grid9: hidden-singles
deduce.grid9.rowd. d2 is 9 by hidden-single.
pending={d2}
deduce.grid9: naked-singles
- f3 is 6 by naked-single.
pending={f3}
- f9 is 9 by naked-single.
pending={f9}
- e9 is 6 by naked-single.
pending={e9}
- h3 is 9 by naked-single.
pending={h3}
deduce.grid9: hidden-singles
deduce.grid9.rowd. d6 is 6 by hidden-single.
pending={d6}
deduce.grid9: naked-singles
deduce.grid9: hidden-singles
deduce.grid9.rowd. d8 is 4 by hidden-single.
pending={d8}
deduce.grid9: naked-singles
deduce.grid9: hidden-singles
deduce.grid9.rowd. d7 is 5 by hidden-single.
pending={d7}
deduce.grid9: naked-singles
- b7 is 7 by naked-single.
pending={b7}
- b8 is 5 by naked-single.
pending={b8}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 8 by naked-single.
pending={e7}
- e1 is 7 by naked-single.
pending={e1}
- e4 is 9 by naked-single.
pending={e4}
- e5 is 2 by naked-single.
pending={e5}
- e6 is 4 by naked-single.
pending={e6}
- f2 is 1 by naked-single.
pending={f2}
- d1 is 8 by naked-single.
pending={d1}
- d5 is 1 by naked-single.
pending={d5}
- g2 is 7 by naked-single.
pending={g2}
- g5 is 8 by naked-single.
pending={g5}
- f5 is 7 by naked-single.
pending={f5}
- f6 is 5 by naked-single.
pending={f6}
- f4 is 8 by naked-single.
pending={f4}
- g4 is 1 by naked-single.
pending={g4}
grid9 didn't work: naked-singles ran out of candidates.
…backtrack.grid8 again
backtrack.grid8 → grid10: a2 guess 3 ∈ {2|3}
pending={a2}
deduce.grid10: naked-singles
- a8 is 5 by naked-single.
pending={a8}
- a5 is 2 by naked-single.
pending={a5}
- c2 is 9 by naked-single.
pending={c2}
- b1 is 2 by naked-single.
pending={b1}
- c5 is 8 by naked-single.
pending={c5}
- c6 is 6 by naked-single.
pending={c6}
- b6 is 5 by naked-single.
pending={b6}
- b4 is 9 by naked-single.
pending={b4}
- c8 is 3 by naked-single.
pending={c8}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 8 by naked-single.
pending={e7}
- d7 is 5 by naked-single.
pending={d7}
- e4 is 6 by naked-single.
pending={e4}
- h6 is 7 by naked-single.
pending={h6}
- f6 is 8 by naked-single.
pending={f6}
- d6 is 4 by naked-single.
pending={d6}
- d8 is 6 by naked-single.
pending={d8}
- b8 is 7 by naked-single.
pending={b8}
- b7 is 1 by naked-single.
pending={b7}
- b9 is 6 by naked-single.
pending={b9}
- d2 is 1 by naked-single.
pending={d2}
- d5 is 9 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- e5 is 7 by naked-single.
pending={e5}
- e1 is 9 by naked-single.
pending={e1}
- e6 is 2 by naked-single.
pending={e6}
- e9 is 4 by naked-single.
pending={e9}
- f2 is 7 by naked-single.
pending={f2}
- f3 is 6 by naked-single.
pending={f3}
- f9 is 9 by naked-single.
pending={f9}
- g2 is 2 by naked-single.
pending={g2}
- g5 is 1 by naked-single.
pending={g5}
- f5 is 5 by naked-single.
pending={f5}
- f4 is 1 by naked-single.
pending={f4}
- g4 is 8 by naked-single.
pending={g4}
- g8 is 4 by naked-single.
pending={g8}
grid10 didn't work: naked-singles ran out of candidates.
…backtrack.grid8 again
grid8 didn't work: exhaustive search revealed no solution.
…backtrack.grid4 again
grid4 didn't work: exhaustive search revealed no solution.
…backtrack.grid3 again
backtrack.grid3 → grid11: a4 guess 5 ∈ {4|5}
pending={a4}
deduce.grid11: naked-singles
- a5 is 2 by naked-single.
pending={a5}
- h4 is 1 by naked-single.
pending={h4}
- g4 is 8 by naked-single.
pending={g4}
deduce.grid11: hidden-singles
deduce.grid11.rowa. a3 is 4 by hidden-single.
pending={a3}
deduce.grid11: naked-singles
deduce.grid11: hidden-singles
deduce.grid11.rowb. b1 is 2 by hidden-single.
pending={b1}
deduce.grid11: naked-singles
deduce.grid11: hidden-singles
deduce.grid11.col3. e3 is 3 by hidden-single.
pending={e3}
deduce.grid11: naked-singles
deduce.grid11: hidden-singles
deduce.grid11.rowd. d4 is 3 by hidden-single.
pending={d4}
deduce.grid11: naked-singles
deduce.grid11: hidden-singles
deduce.grid11: naked-pairs
two's heap=g9 {1|4}, b9 {1|6}, g3 {5|7}, c8 {3|6}, i1 {1|7}, f4 {6|9}, g5 {5|7}, b6 {4|6}, h7 {2|7}, i7 {1|7}, e7 {2|8}, b3 {7|9}, f9 {6|9}, c5 {8|9}, c2 {3|9}, c6 {6|8}, h1 {7|9}, h6 {5|7}, a8 {3|7}, d7 {5|8}, a2 {3|7}.
Naked-pair {5|7} in cells {g3, g5, h6} contained within {rowg, box8}, updating cells {g2, g8, g9}:
- g2: {1|2|7} → {1|2}.
- g8: {2|4|7} → {2|4}.
Naked-pair {6|9} in cells {f4, f9} contained within {rowf}, updating cells {f2, f3, f5, f6, f8}:
- f2: {1|6|7|9} → {1|7}.
- f3: {6|7|9} → {7}. Solved.
- f5: {1|5|7|8|9} → {1|5|7|8}.
- f6: {2|5|6|7|8} → {2|5|7|8}.
- f8: {2|5|6} → {2|5}.
pending={f3}
deduce.grid11: naked-singles
- b3 is 9 by naked-single.
pending={b3}
- c2 is 3 by naked-single.
pending={c2}
- a2 is 7 by naked-single.
pending={a2}
- a8 is 3 by naked-single.
pending={a8}
- c8 is 6 by naked-single.
pending={c8}
- b9 is 1 by naked-single.
pending={b9}
- c6 is 8 by naked-single.
pending={c6}
- c5 is 9 by naked-single.
pending={c5}
- f2 is 1 by naked-single.
pending={f2}
- g2 is 2 by naked-single.
pending={g2}
- g3 is 5 by naked-single.
pending={g3}
- g5 is 7 by naked-single.
pending={g5}
- e5 is 8 by naked-single.
pending={e5}
- e1 is 9 by naked-single.
pending={e1}
- d1 is 8 by naked-single.
pending={d1}
- d2 is 6 by naked-single.
pending={d2}
- d7 is 5 by naked-single.
pending={d7}
- b7 is 7 by naked-single.
pending={b7}
- b8 is 5 by naked-single.
pending={b8}
- d5 is 1 by naked-single.
pending={d5}
- d6 is 4 by naked-single.
pending={d6}
- b6 is 6 by naked-single.
pending={b6}
- b4 is 4 by naked-single.
pending={b4}
grid11 didn't work: naked-singles ran out of candidates.
…backtrack.grid3 again
grid3 didn't work: exhaustive search revealed no solution.
…backtrack.grid2 again
backtrack.grid2 → grid12: c7 guess 8 ∈ {4|8}
pending={c7}
deduce.grid12: naked-singles
deduce.grid12: hidden-singles
deduce.grid12: naked-pairs
two's heap=g9 {1|4}, a9 {3|4}, e7 {2|4}, c5 {6|9}, d7 {4|5}, c6 {4|6}.
grid12
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
| 5
|
| 1
| 7
|
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
|
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid12 → grid13: a9 guess 3 ∈ {3|4}
pending={a9}
deduce.grid13: naked-singles
deduce.grid13: hidden-singles
deduce.grid13.rowc. c2 is 3 by hidden-single.
pending={c2}
deduce.grid13: naked-singles
deduce.grid13: hidden-singles
deduce.grid13.rowc. c5 is 9 by hidden-single.
pending={c5}
deduce.grid13: naked-singles
deduce.grid13: hidden-singles
deduce.grid13.col3. e3 is 3 by hidden-single.
pending={e3}
deduce.grid13: naked-singles
deduce.grid13: hidden-singles
deduce.grid13.col8. i8 is 3 by hidden-single.
pending={i8}
deduce.grid13: naked-singles
deduce.grid13: hidden-singles
deduce.grid13.box9. h9 is 9 by hidden-single.
pending={h9}
deduce.grid13: naked-singles
deduce.grid13: hidden-singles
deduce.grid13: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, e7 {2|4}, a3 {4|7}, c6 {4|6}, f9 {6|8}, c8 {4|6}, i6 {6|7}.
grid13
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
| 3
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid13 → grid14: a3 guess 4 ∈ {4|7}
pending={a3}
deduce.grid14: naked-singles
deduce.grid14: hidden-singles
deduce.grid14: naked-pairs
two's heap=g9 {1|4}, e7 {2|4}, c6 {4|6}, a2 {2|7}, d7 {4|5}, a8 {5|7}, c8 {4|6}, b3 {7|9}, f9 {6|8}, a4 {5|8}, g3 {5|7}, i6 {6|7}.
grid14
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
| 4
|
|
| 1
| 9
|
| 3
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid14 → grid15: a2 guess 2 ∈ {2|7}
pending={a2}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15.rowa. a8 is 7 by hidden-single.
pending={a8}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15.rowb. b6 is 2 by hidden-single.
pending={b6}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15.rowg. g8 is 2 by hidden-single.
pending={g8}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15.rowf. f5 is 2 by hidden-single.
pending={f5}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15.rowe. e7 is 2 by hidden-single.
pending={e7}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15.rowh. h1 is 2 by hidden-single.
pending={h1}
deduce.grid15: naked-singles
deduce.grid15: hidden-singles
deduce.grid15: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, c6 {4|6}, a4 {5|8}, h7 {1|7}, i6 {6|7}, c8 {4|6}, b3 {7|9}, f9 {6|8}, a5 {5|8}, g3 {5|7}, b1 {7|9}.
Naked-pair {5|8} in cells {a4, a5} contained within {rowa, box2}, updating cells {b4, c6}:
Naked-pair {7|9} in cells {b1, b3} contained within {rowb, box1}, updating cells {b4, b7, b8, b9}:
grid15
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
|
|
| 1
| 9
| 7
| 3
|
| b
|
| 8
|
|
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid15 → grid16: a4 guess 5 ∈ {5|8}
pending={a4}
deduce.grid16: naked-singles
- a5 is 8 by naked-single.
pending={a5}
deduce.grid16: hidden-singles
deduce.grid16.rowg. g4 is 8 by hidden-single.
pending={g4}
deduce.grid16: naked-singles
deduce.grid16: hidden-singles
deduce.grid16: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, b4 {4|6}, g3 {5|7}, c6 {4|6}, i6 {6|7}, e5 {6|7}, b3 {7|9}, f9 {6|8}, c8 {4|6}, h7 {1|7}, b1 {7|9}.
Naked-pair {7|9} in cells {b1, b3} contained within {rowb, box1}, updating cells {b4, b7, b8, b9}:
grid16
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 5
| 8
| 1
| 9
| 7
| 3
|
| b
|
| 8
|
|
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
| 8
|
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid16 → grid17: b1 guess 7 ∈ {7|9}
pending={b1}
deduce.grid17: naked-singles
- b3 is 9 by naked-single.
pending={b3}
deduce.grid17: hidden-singles
deduce.grid17: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, c8 {4|6}, c6 {4|6}, b4 {4|6}, e5 {6|7}, f3 {6|7}, f9 {6|8}, g3 {5|7}, e1 {8|9}, h7 {1|7}, i1 {1|9}, i6 {6|7}.
grid17
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 5
| 8
| 1
| 9
| 7
| 3
|
| b
| 7
| 8
| 9
|
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
| 8
|
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid17 → grid18: b4 guess 4 ∈ {4|6}
pending={b4}
deduce.grid18: naked-singles
- c6 is 6 by naked-single.
pending={c6}
- c8 is 4 by naked-single.
pending={c8}
- i6 is 7 by naked-single.
pending={i6}
deduce.grid18: hidden-singles
deduce.grid18.rowe. e5 is 7 by hidden-single.
pending={e5}
deduce.grid18: naked-singles
deduce.grid18: hidden-singles
deduce.grid18.col7. h7 is 7 by hidden-single.
pending={h7}
deduce.grid18: naked-singles
deduce.grid18: hidden-singles
deduce.grid18: naked-pairs
two's heap=g9 {1|4}, i7 {1|4}, b7 {1|5}, h6 {3|5}, g3 {5|7}, g5 {1|5}, h2 {1|6}, b8 {5|6}, d7 {4|5}, e1 {8|9}, f9 {6|8}, e4 {6|9}, b9 {1|6}, e6 {4|8}, h3 {5|6}, f3 {6|7}, i1 {1|9}, f6 {5|8}, i5 {1|6}.
grid18
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 5
| 8
| 1
| 9
| 7
| 3
|
| b
| 7
| 8
| 9
| 4
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
| 6
| 8
| 4
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
| 7
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
| 8
|
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
| 7
| 8
| 9
|
| i
|
|
| 8
| 2
|
| 7
|
| 3
| 5
|
backtrack.grid18 → grid19: b7 guess 1 ∈ {1|5}
pending={b7}
deduce.grid19: naked-singles
- b9 is 6 by naked-single.
pending={b9}
- b8 is 5 by naked-single.
pending={b8}
- f9 is 8 by naked-single.
pending={f9}
- e9 is 4 by naked-single.
pending={e9}
- d7 is 5 by naked-single.
pending={d7}
- e6 is 8 by naked-single.
pending={e6}
- e1 is 9 by naked-single.
pending={e1}
- e4 is 6 by naked-single.
pending={e4}
- d5 is 1 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- d2 is 6 by naked-single.
pending={d2}
- d8 is 9 by naked-single.
pending={d8}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 4 by naked-single.
pending={d6}
- f3 is 7 by naked-single.
pending={f3}
- f2 is 1 by naked-single.
pending={f2}
- f4 is 9 by naked-single.
pending={f4}
- f6 is 5 by naked-single.
pending={f6}
- f8 is 6 by naked-single.
pending={f8}
- g3 is 5 by naked-single.
pending={g3}
grid19 didn't work: naked-singles ran out of candidates.
…backtrack.grid18 again
backtrack.grid18 → grid20: b7 guess 5 ∈ {1|5}
pending={b7}
deduce.grid20: naked-singles
- b8 is 6 by naked-single.
pending={b8}
- b9 is 1 by naked-single.
pending={b9}
- d7 is 4 by naked-single.
pending={d7}
- g9 is 4 by naked-single.
pending={g9}
- i7 is 1 by naked-single.
pending={i7}
- i1 is 9 by naked-single.
pending={i1}
- e1 is 8 by naked-single.
pending={e1}
- d1 is 1 by naked-single.
pending={d1}
- e6 is 4 by naked-single.
pending={e6}
- e9 is 6 by naked-single.
pending={e9}
- e4 is 9 by naked-single.
pending={e4}
- f9 is 8 by naked-single.
pending={f9}
- f6 is 5 by naked-single.
pending={f6}
- d5 is 6 by naked-single.
pending={d5}
- d2 is 9 by naked-single.
pending={d2}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 8 by naked-single.
pending={d6}
- d8 is 5 by naked-single.
pending={d8}
- f4 is 1 by naked-single.
pending={f4}
- f8 is 9 by naked-single.
pending={f8}
- h4 is 6 by naked-single.
pending={h4}
- h2 is 1 by naked-single.
pending={h2}
- g2 is 7 by naked-single.
pending={g2}
- f2 is 6 by naked-single.
pending={f2}
- f3 is 7 by naked-single.
pending={f3}
- g3 is 5 by naked-single.
pending={g3}
- g5 is 1 by naked-single.
pending={g5}
grid20 didn't work: naked-singles ran out of candidates.
…backtrack.grid18 again
grid18 didn't work: exhaustive search revealed no solution.
…backtrack.grid17 again
backtrack.grid17 → grid21: b4 guess 6 ∈ {4|6}
pending={b4}
deduce.grid21: naked-singles
- c6 is 4 by naked-single.
pending={c6}
- c8 is 6 by naked-single.
pending={c8}
deduce.grid21: hidden-singles
deduce.grid21: naked-pairs
two's heap=h4 {1|3}, b8 {4|5}, b9 {1|4}, i6 {6|7}, g3 {5|7}, g9 {1|4}, h7 {1|7}, f4 {1|9}, f8 {5|9}, e4 {4|9}, f9 {6|8}, e5 {6|7}, d7 {4|5}, f3 {6|7}, i1 {1|9}, e1 {8|9}.
Naked-pair {1|4} in cells {b9, g9} contained within {col9}, updating cells {e9, f9}:
grid21
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 5
| 8
| 1
| 9
| 7
| 3
|
| b
| 7
| 8
| 9
| 6
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
| 4
| 8
| 6
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
| 8
|
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid21 → grid22: b8 guess 4 ∈ {4|5}
pending={b8}
deduce.grid22: naked-singles
- b9 is 1 by naked-single.
pending={b9}
- b7 is 5 by naked-single.
pending={b7}
- d7 is 4 by naked-single.
pending={d7}
- g9 is 4 by naked-single.
pending={g9}
deduce.grid22: hidden-singles
deduce.grid22.rowe. e4 is 4 by hidden-single.
pending={e4}
deduce.grid22: naked-singles
deduce.grid22: hidden-singles
deduce.grid22.rowe. e1 is 9 by hidden-single.
pending={e1}
deduce.grid22: naked-singles
- i1 is 1 by naked-single.
pending={i1}
- d1 is 8 by naked-single.
pending={d1}
- g2 is 7 by naked-single.
pending={g2}
- g3 is 5 by naked-single.
pending={g3}
- g5 is 1 by naked-single.
pending={g5}
- h2 is 6 by naked-single.
pending={h2}
- d2 is 1 by naked-single.
pending={d2}
grid22 didn't work: naked-singles ran out of candidates.
…backtrack.grid21 again
backtrack.grid21 → grid23: b8 guess 5 ∈ {4|5}
pending={b8}
deduce.grid23: naked-singles
- f8 is 9 by naked-single.
pending={f8}
- d8 is 4 by naked-single.
pending={d8}
- d7 is 5 by naked-single.
pending={d7}
- f4 is 1 by naked-single.
pending={f4}
- d5 is 6 by naked-single.
pending={d5}
- e5 is 7 by naked-single.
pending={e5}
- e6 is 8 by naked-single.
pending={e6}
- d6 is 3 by naked-single.
pending={d6}
- d4 is 9 by naked-single.
pending={d4}
- d2 is 1 by naked-single.
pending={d2}
- d1 is 8 by naked-single.
pending={d1}
- e1 is 9 by naked-single.
pending={e1}
- e4 is 4 by naked-single.
pending={e4}
- e9 is 6 by naked-single.
pending={e9}
- f6 is 5 by naked-single.
pending={f6}
- f9 is 8 by naked-single.
pending={f9}
- h4 is 3 by naked-single.
pending={h4}
- i1 is 1 by naked-single.
pending={i1}
grid23 didn't work: naked-singles ran out of candidates.
…backtrack.grid21 again
grid21 didn't work: exhaustive search revealed no solution.
…backtrack.grid17 again
grid17 didn't work: exhaustive search revealed no solution.
…backtrack.grid16 again
backtrack.grid16 → grid24: b1 guess 9 ∈ {7|9}
pending={b1}
deduce.grid24: naked-singles
- b3 is 7 by naked-single.
pending={b3}
- g3 is 5 by naked-single.
pending={g3}
- h3 is 6 by naked-single.
pending={h3}
- f3 is 9 by naked-single.
pending={f3}
deduce.grid24: hidden-singles
deduce.grid24.rowe. e4 is 9 by hidden-single.
pending={e4}
deduce.grid24: naked-singles
deduce.grid24: hidden-singles
deduce.grid24.rowd. d8 is 9 by hidden-single.
pending={d8}
deduce.grid24: naked-singles
deduce.grid24: hidden-singles
deduce.grid24.rowh. h6 is 5 by hidden-single.
pending={h6}
deduce.grid24: naked-singles
deduce.grid24: hidden-singles
deduce.grid24.rowf. f8 is 5 by hidden-single.
pending={f8}
deduce.grid24: naked-singles
- d7 is 4 by naked-single.
pending={d7}
deduce.grid24: hidden-singles
deduce.grid24.rowb. b7 is 5 by hidden-single.
pending={b7}
deduce.grid24: naked-singles
deduce.grid24: hidden-singles
deduce.grid24.rowb. b9 is 1 by hidden-single.
pending={b9}
deduce.grid24: naked-singles
- g9 is 4 by naked-single.
pending={g9}
deduce.grid24: hidden-singles
deduce.grid24.rowd. d5 is 5 by hidden-single.
pending={d5}
deduce.grid24: naked-singles
deduce.grid24: hidden-singles
deduce.grid24.rowe. e6 is 4 by hidden-single.
pending={e6}
deduce.grid24: naked-singles
- c6 is 6 by naked-single.
pending={c6}
- b4 is 4 by naked-single.
pending={b4}
- b8 is 6 by naked-single.
pending={b8}
- c8 is 4 by naked-single.
pending={c8}
- i6 is 7 by naked-single.
pending={i6}
- f6 is 8 by naked-single.
pending={f6}
- d6 is 3 by naked-single.
pending={d6}
- f9 is 6 by naked-single.
pending={f9}
- e9 is 8 by naked-single.
pending={e9}
- e1 is 7 by naked-single.
pending={e1}
- e5 is 6 by naked-single.
pending={e5}
- d4 is 1 by naked-single.
pending={d4}
- d1 is 8 by naked-single.
pending={d1}
- d2 is 6 by naked-single.
pending={d2}
- f2 is 1 by naked-single.
pending={f2}
grid24 didn't work: naked-singles ran out of candidates.
…backtrack.grid16 again
grid16 didn't work: exhaustive search revealed no solution.
…backtrack.grid15 again
backtrack.grid15 → grid25: a4 guess 8 ∈ {5|8}
pending={a4}
deduce.grid25: naked-singles
- a5 is 5 by naked-single.
pending={a5}
deduce.grid25: hidden-singles
deduce.grid25.rowg. g5 is 8 by hidden-single.
pending={g5}
deduce.grid25: naked-singles
deduce.grid25: hidden-singles
deduce.grid25: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, g4 {1|5}, e5 {6|7}, c6 {4|6}, d5 {1|6}, b4 {4|6}, b3 {7|9}, f9 {6|8}, g3 {5|7}, c8 {4|6}, b1 {7|9}, h7 {1|7}, i6 {6|7}.
Naked-pair {7|9} in cells {b1, b3} contained within {rowb, box1}, updating cells {b4, b7, b8, b9}:
grid25
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 8
| 5
| 1
| 9
| 7
| 3
|
| b
|
| 8
|
|
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid25 → grid26: b1 guess 7 ∈ {7|9}
pending={b1}
deduce.grid26: naked-singles
- b3 is 9 by naked-single.
pending={b3}
deduce.grid26: hidden-singles
deduce.grid26: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, g4 {1|5}, c6 {4|6}, d5 {1|6}, c8 {4|6}, e5 {6|7}, f3 {6|7}, f9 {6|8}, g3 {5|7}, b4 {4|6}, e1 {8|9}, h7 {1|7}, i1 {1|9}, i6 {6|7}.
grid26
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 8
| 5
| 1
| 9
| 7
| 3
|
| b
| 7
| 8
| 9
|
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid26 → grid27: b4 guess 4 ∈ {4|6}
pending={b4}
deduce.grid27: naked-singles
- c6 is 6 by naked-single.
pending={c6}
- c8 is 4 by naked-single.
pending={c8}
- i6 is 7 by naked-single.
pending={i6}
deduce.grid27: hidden-singles
deduce.grid27.rowe. e5 is 7 by hidden-single.
pending={e5}
deduce.grid27: naked-singles
deduce.grid27: hidden-singles
deduce.grid27.col7. h7 is 7 by hidden-single.
pending={h7}
deduce.grid27: naked-singles
deduce.grid27: hidden-singles
deduce.grid27: naked-pairs
two's heap=g9 {1|4}, i7 {1|4}, b7 {1|5}, d7 {4|5}, h6 {3|5}, b9 {1|6}, g4 {1|5}, b8 {5|6}, i5 {1|6}, d5 {1|6}, f9 {6|8}, e1 {8|9}, g3 {5|7}, e4 {6|9}, h2 {1|6}, e6 {4|8}, h3 {5|6}, i1 {1|9}, f3 {6|7}, f6 {5|8}.
grid27
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 8
| 5
| 1
| 9
| 7
| 3
|
| b
| 7
| 8
| 9
| 4
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
| 6
| 8
| 4
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
| 7
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
| 7
| 8
| 9
|
| i
|
|
| 8
| 2
|
| 7
|
| 3
| 5
|
backtrack.grid27 → grid28: b7 guess 1 ∈ {1|5}
pending={b7}
deduce.grid28: naked-singles
- b9 is 6 by naked-single.
pending={b9}
- b8 is 5 by naked-single.
pending={b8}
- f9 is 8 by naked-single.
pending={f9}
- e9 is 4 by naked-single.
pending={e9}
- d7 is 5 by naked-single.
pending={d7}
- e6 is 8 by naked-single.
pending={e6}
- e1 is 9 by naked-single.
pending={e1}
- e4 is 6 by naked-single.
pending={e4}
- d5 is 1 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- d2 is 6 by naked-single.
pending={d2}
- d8 is 9 by naked-single.
pending={d8}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 4 by naked-single.
pending={d6}
- f3 is 7 by naked-single.
pending={f3}
- f2 is 1 by naked-single.
pending={f2}
- f6 is 5 by naked-single.
pending={f6}
- f4 is 9 by naked-single.
pending={f4}
- f8 is 6 by naked-single.
pending={f8}
- g3 is 5 by naked-single.
pending={g3}
- g4 is 1 by naked-single.
pending={g4}
grid28 didn't work: naked-singles ran out of candidates.
…backtrack.grid27 again
backtrack.grid27 → grid29: b7 guess 5 ∈ {1|5}
pending={b7}
deduce.grid29: naked-singles
- b8 is 6 by naked-single.
pending={b8}
- b9 is 1 by naked-single.
pending={b9}
- d7 is 4 by naked-single.
pending={d7}
- g9 is 4 by naked-single.
pending={g9}
- i7 is 1 by naked-single.
pending={i7}
- i1 is 9 by naked-single.
pending={i1}
- e1 is 8 by naked-single.
pending={e1}
- d1 is 1 by naked-single.
pending={d1}
- d5 is 6 by naked-single.
pending={d5}
- d2 is 9 by naked-single.
pending={d2}
- d8 is 5 by naked-single.
pending={d8}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 8 by naked-single.
pending={d6}
- e4 is 9 by naked-single.
pending={e4}
- e6 is 4 by naked-single.
pending={e6}
- e9 is 6 by naked-single.
pending={e9}
- f6 is 5 by naked-single.
pending={f6}
- f4 is 1 by naked-single.
pending={f4}
- f8 is 9 by naked-single.
pending={f8}
- f9 is 8 by naked-single.
pending={f9}
- g4 is 5 by naked-single.
pending={g4}
- g3 is 7 by naked-single.
pending={g3}
- f3 is 6 by naked-single.
pending={f3}
- f2 is 7 by naked-single.
pending={f2}
- g2 is 1 by naked-single.
pending={g2}
- h2 is 6 by naked-single.
pending={h2}
- h3 is 5 by naked-single.
pending={h3}
grid29 didn't work: naked-singles ran out of candidates.
…backtrack.grid27 again
grid27 didn't work: exhaustive search revealed no solution.
…backtrack.grid26 again
backtrack.grid26 → grid30: b4 guess 6 ∈ {4|6}
pending={b4}
deduce.grid30: naked-singles
- c6 is 4 by naked-single.
pending={c6}
- c8 is 6 by naked-single.
pending={c8}
deduce.grid30: hidden-singles
deduce.grid30: naked-pairs
two's heap=b9 {1|4}, b8 {4|5}, g9 {1|4}, d7 {4|5}, g3 {5|7}, g4 {1|5}, h7 {1|7}, f3 {6|7}, f8 {5|9}, e1 {8|9}, f9 {6|8}, e4 {4|9}, d5 {1|6}, e5 {6|7}, i1 {1|9}, i6 {6|7}.
Naked-pair {1|4} in cells {b9, g9} contained within {col9}, updating cells {e9, f9}:
grid30
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 4
| 8
| 5
| 1
| 9
| 7
| 3
|
| b
| 7
| 8
| 9
| 6
| 3
| 2
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
| 4
| 8
| 6
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
| 2
| 1
|
|
| f
| 4
|
|
|
| 2
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
| 2
|
|
| h
| 2
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid30 → grid31: b8 guess 4 ∈ {4|5}
pending={b8}
deduce.grid31: naked-singles
- b9 is 1 by naked-single.
pending={b9}
- b7 is 5 by naked-single.
pending={b7}
- d7 is 4 by naked-single.
pending={d7}
- g9 is 4 by naked-single.
pending={g9}
deduce.grid31: hidden-singles
deduce.grid31.rowe. e4 is 4 by hidden-single.
pending={e4}
deduce.grid31: naked-singles
deduce.grid31: hidden-singles
deduce.grid31.rowe. e1 is 9 by hidden-single.
pending={e1}
deduce.grid31: naked-singles
- i1 is 1 by naked-single.
pending={i1}
- d1 is 8 by naked-single.
pending={d1}
- g2 is 7 by naked-single.
pending={g2}
- g3 is 5 by naked-single.
pending={g3}
- g4 is 1 by naked-single.
pending={g4}
- h2 is 6 by naked-single.
pending={h2}
- d2 is 1 by naked-single.
pending={d2}
- d5 is 6 by naked-single.
pending={d5}
- e5 is 7 by naked-single.
pending={e5}
- e6 is 8 by naked-single.
pending={e6}
- e9 is 6 by naked-single.
pending={e9}
grid31 didn't work: naked-singles ran out of candidates.
…backtrack.grid30 again
backtrack.grid30 → grid32: b8 guess 5 ∈ {4|5}
pending={b8}
deduce.grid32: naked-singles
- f8 is 9 by naked-single.
pending={f8}
- d8 is 4 by naked-single.
pending={d8}
- d7 is 5 by naked-single.
pending={d7}
deduce.grid32: hidden-singles
deduce.grid32.rowe. e4 is 4 by hidden-single.
pending={e4}
deduce.grid32: naked-singles
deduce.grid32: hidden-singles
deduce.grid32.rowe. e1 is 9 by hidden-single.
pending={e1}
deduce.grid32: naked-singles
- i1 is 1 by naked-single.
pending={i1}
- d1 is 8 by naked-single.
pending={d1}
deduce.grid32: hidden-singles
deduce.grid32.rowd. d4 is 9 by hidden-single.
pending={d4}
deduce.grid32: naked-singles
deduce.grid32: hidden-singles
deduce.grid32.rowd. d6 is 3 by hidden-single.
pending={d6}
deduce.grid32: naked-singles
deduce.grid32: hidden-singles
deduce.grid32.rowh. h4 is 3 by hidden-single.
pending={h4}
deduce.grid32: naked-singles
deduce.grid32: hidden-singles
deduce.grid32.rowh. h7 is 1 by hidden-single.
pending={h7}
deduce.grid32: naked-singles
- b7 is 4 by naked-single.
pending={b7}
- b9 is 1 by naked-single.
pending={b9}
- g9 is 4 by naked-single.
pending={g9}
- g2 is 7 by naked-single.
pending={g2}
- g3 is 5 by naked-single.
pending={g3}
- g4 is 1 by naked-single.
pending={g4}
- f4 is 5 by naked-single.
pending={f4}
- h2 is 6 by naked-single.
pending={h2}
- d2 is 1 by naked-single.
pending={d2}
- d5 is 6 by naked-single.
pending={d5}
- e5 is 7 by naked-single.
pending={e5}
- e6 is 8 by naked-single.
pending={e6}
- e9 is 6 by naked-single.
pending={e9}
grid32 didn't work: naked-singles ran out of candidates.
…backtrack.grid30 again
grid30 didn't work: exhaustive search revealed no solution.
…backtrack.grid26 again
grid26 didn't work: exhaustive search revealed no solution.
…backtrack.grid25 again
backtrack.grid25 → grid33: b1 guess 9 ∈ {7|9}
pending={b1}
deduce.grid33: naked-singles
- b3 is 7 by naked-single.
pending={b3}
- g3 is 5 by naked-single.
pending={g3}
- g4 is 1 by naked-single.
pending={g4}
- g9 is 4 by naked-single.
pending={g9}
- g2 is 7 by naked-single.
pending={g2}
- h3 is 6 by naked-single.
pending={h3}
- f3 is 9 by naked-single.
pending={f3}
- h2 is 1 by naked-single.
pending={h2}
- d2 is 6 by naked-single.
pending={d2}
- d5 is 1 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- e1 is 7 by naked-single.
pending={e1}
- e5 is 6 by naked-single.
pending={e5}
- e9 is 8 by naked-single.
pending={e9}
- e6 is 4 by naked-single.
pending={e6}
- c6 is 6 by naked-single.
pending={c6}
- b4 is 4 by naked-single.
pending={b4}
- c8 is 4 by naked-single.
pending={c8}
- e4 is 9 by naked-single.
pending={e4}
grid33 didn't work: naked-singles ran out of candidates.
…backtrack.grid25 again
grid25 didn't work: exhaustive search revealed no solution.
…backtrack.grid15 again
grid15 didn't work: exhaustive search revealed no solution.
…backtrack.grid14 again
backtrack.grid14 → grid34: a2 guess 7 ∈ {2|7}
pending={a2}
deduce.grid34: naked-singles
- a8 is 5 by naked-single.
pending={a8}
- a4 is 8 by naked-single.
pending={a4}
- a5 is 2 by naked-single.
pending={a5}
- b3 is 9 by naked-single.
pending={b3}
- b1 is 2 by naked-single.
pending={b1}
deduce.grid34: hidden-singles
deduce.grid34.rowg. g5 is 8 by hidden-single.
pending={g5}
deduce.grid34: naked-singles
deduce.grid34: hidden-singles
deduce.grid34.col7. d7 is 5 by hidden-single.
pending={d7}
deduce.grid34: naked-singles
deduce.grid34: hidden-singles
deduce.grid34.col5. f5 is 5 by hidden-single.
pending={f5}
deduce.grid34: naked-singles
deduce.grid34: hidden-singles
deduce.grid34: naked-pairs
two's heap=g9 {1|4}, e7 {2|4}, c6 {4|6}, d5 {1|6}, g4 {1|5}, f3 {6|7}, f9 {6|8}, e5 {6|7}, g3 {5|7}, c8 {4|6}, h1 {1|7}, i6 {6|7}.
grid34
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 7
| 4
| 8
| 2
| 1
| 9
| 5
| 3
|
| b
| 2
| 8
| 9
|
| 3
|
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
| 5
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
| 5
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid34 → grid35: c6 guess 4 ∈ {4|6}
pending={c6}
deduce.grid35: naked-singles
- c8 is 6 by naked-single.
pending={c8}
deduce.grid35: hidden-singles
deduce.grid35: naked-pairs
two's heap=b9 {1|4}, e7 {2|4}, g9 {1|4}, d5 {1|6}, b4 {5|6}, b8 {4|7}, g4 {1|5}, b6 {5|6}, f3 {6|7}, f8 {2|9}, f9 {6|8}, d8 {4|9}, g3 {5|7}, e5 {6|7}, h1 {1|7}, i6 {6|7}.
Naked-pair {1|4} in cells {b9, g9} contained within {col9}, updating cells {e9, f9}:
Naked-pair {5|6} in cells {b4, b6} contained within {rowb, box2}, updating cells {b7, b8, b9}:
grid35
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 7
| 4
| 8
| 2
| 1
| 9
| 5
| 3
|
| b
| 2
| 8
| 9
|
| 3
|
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
| 4
| 8
| 6
| 2
|
| d
|
|
| 2
|
|
|
| 5
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
| 5
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid35 → grid36: b4 guess 5 ∈ {5|6}
pending={b4}
deduce.grid36: naked-singles
- b6 is 6 by naked-single.
pending={b6}
- g4 is 1 by naked-single.
pending={g4}
- g9 is 4 by naked-single.
pending={g9}
- b9 is 1 by naked-single.
pending={b9}
- g2 is 2 by naked-single.
pending={g2}
- g8 is 7 by naked-single.
pending={g8}
- b8 is 4 by naked-single.
pending={b8}
- b7 is 7 by naked-single.
pending={b7}
- d8 is 9 by naked-single.
pending={d8}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 4 by naked-single.
pending={e7}
- g3 is 5 by naked-single.
pending={g3}
- i6 is 7 by naked-single.
pending={i6}
- f6 is 8 by naked-single.
pending={f6}
- d6 is 3 by naked-single.
pending={d6}
- e6 is 2 by naked-single.
pending={e6}
- f9 is 6 by naked-single.
pending={f9}
- e9 is 8 by naked-single.
pending={e9}
- f3 is 7 by naked-single.
pending={f3}
- e1 is 9 by naked-single.
pending={e1}
- e4 is 6 by naked-single.
pending={e4}
- d4 is 4 by naked-single.
pending={d4}
- d5 is 1 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- d2 is 6 by naked-single.
pending={d2}
- e5 is 7 by naked-single.
pending={e5}
- f2 is 1 by naked-single.
pending={f2}
- f4 is 9 by naked-single.
pending={f4}
grid36 didn't work: naked-singles ran out of candidates.
…backtrack.grid35 again
backtrack.grid35 → grid37: b4 guess 6 ∈ {5|6}
pending={b4}
deduce.grid37: naked-singles
- b6 is 5 by naked-single.
pending={b6}
deduce.grid37: hidden-singles
deduce.grid37: naked-pairs
two's heap=b9 {1|4}, h1 {1|7}, g9 {1|4}, b8 {4|7}, f4 {1|9}, g3 {5|7}, e7 {2|4}, f3 {6|7}, e9 {6|8}, e4 {4|9}, f8 {2|9}, f9 {6|8}, e5 {6|7}, d5 {1|6}, g4 {1|5}, d8 {4|9}, i6 {6|7}.
Naked-pair {1|4} in cells {b9, g9} contained within {col9}, updating cells {e9, f9}:
Naked-pair {6|8} in cells {e9, f9} contained within {col9, box6}, updating cells {b9, d8, e7, f8, g9}:
grid37
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 7
| 4
| 8
| 2
| 1
| 9
| 5
| 3
|
| b
| 2
| 8
| 9
| 6
| 3
| 5
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
| 4
| 8
| 6
| 2
|
| d
|
|
| 2
|
|
|
| 5
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
| 5
|
| 3
|
|
|
| g
| 3
|
|
|
| 8
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid37 → grid38: b8 guess 4 ∈ {4|7}
pending={b8}
deduce.grid38: naked-singles
- b9 is 1 by naked-single.
pending={b9}
- b7 is 7 by naked-single.
pending={b7}
- d8 is 9 by naked-single.
pending={d8}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 4 by naked-single.
pending={e7}
- e4 is 9 by naked-single.
pending={e4}
- f4 is 1 by naked-single.
pending={f4}
- d5 is 6 by naked-single.
pending={d5}
- d2 is 1 by naked-single.
pending={d2}
- d1 is 8 by naked-single.
pending={d1}
- d6 is 3 by naked-single.
pending={d6}
- d4 is 4 by naked-single.
pending={d4}
- e1 is 7 by naked-single.
pending={e1}
grid38 didn't work: naked-singles ran out of candidates.
…backtrack.grid37 again
backtrack.grid37 → grid39: b8 guess 7 ∈ {4|7}
pending={b8}
deduce.grid39: naked-singles
deduce.grid39: hidden-singles
deduce.grid39.rowg. g3 is 7 by hidden-single.
pending={g3}
deduce.grid39: naked-singles
- f3 is 6 by naked-single.
pending={f3}
- f9 is 8 by naked-single.
pending={f9}
- e9 is 6 by naked-single.
pending={e9}
- e5 is 7 by naked-single.
pending={e5}
- f6 is 2 by naked-single.
pending={f6}
- e6 is 8 by naked-single.
pending={e6}
- e1 is 9 by naked-single.
pending={e1}
- d2 is 1 by naked-single.
pending={d2}
- d1 is 8 by naked-single.
pending={d1}
- d5 is 6 by naked-single.
pending={d5}
- d6 is 3 by naked-single.
pending={d6}
- e4 is 4 by naked-single.
pending={e4}
- d4 is 9 by naked-single.
pending={d4}
- d8 is 4 by naked-single.
pending={d8}
- e7 is 2 by naked-single.
pending={e7}
grid39 didn't work: naked-singles ran out of candidates.
…backtrack.grid37 again
grid37 didn't work: exhaustive search revealed no solution.
…backtrack.grid35 again
grid35 didn't work: exhaustive search revealed no solution.
…backtrack.grid34 again
backtrack.grid34 → grid40: c6 guess 6 ∈ {4|6}
pending={c6}
deduce.grid40: naked-singles
- c8 is 4 by naked-single.
pending={c8}
- i6 is 7 by naked-single.
pending={i6}
deduce.grid40: hidden-singles
deduce.grid40.rowf. f3 is 7 by hidden-single.
pending={f3}
deduce.grid40: naked-singles
- g3 is 5 by naked-single.
pending={g3}
- g4 is 1 by naked-single.
pending={g4}
- g9 is 4 by naked-single.
pending={g9}
- g2 is 2 by naked-single.
pending={g2}
- g8 is 7 by naked-single.
pending={g8}
- b8 is 6 by naked-single.
pending={b8}
- b9 is 1 by naked-single.
pending={b9}
- b7 is 7 by naked-single.
pending={b7}
- d8 is 9 by naked-single.
pending={d8}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 4 by naked-single.
pending={e7}
- f6 is 8 by naked-single.
pending={f6}
- e6 is 2 by naked-single.
pending={e6}
- f9 is 6 by naked-single.
pending={f9}
- e9 is 8 by naked-single.
pending={e9}
- e1 is 9 by naked-single.
pending={e1}
- e4 is 6 by naked-single.
pending={e4}
- d5 is 1 by naked-single.
pending={d5}
- d1 is 8 by naked-single.
pending={d1}
- d2 is 6 by naked-single.
pending={d2}
- e5 is 7 by naked-single.
pending={e5}
- f2 is 1 by naked-single.
pending={f2}
- f4 is 9 by naked-single.
pending={f4}
grid40 didn't work: naked-singles ran out of candidates.
…backtrack.grid34 again
grid34 didn't work: exhaustive search revealed no solution.
…backtrack.grid14 again
grid14 didn't work: exhaustive search revealed no solution.
…backtrack.grid13 again
backtrack.grid13 → grid41: a3 guess 7 ∈ {4|7}
pending={a3}
deduce.grid41: naked-singles
deduce.grid41: hidden-singles
deduce.grid41: naked-pairs
two's heap=g9 {1|4}, e7 {2|4}, a2 {2|4}, a8 {4|5}, g3 {4|5}, d7 {4|5}, c8 {4|6}, b3 {4|9}, f3 {6|9}, f9 {6|8}, c6 {4|6}, b1 {2|9}, h3 {5|6}, i6 {6|7}.
grid41
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
| 7
|
|
| 1
| 9
|
| 3
|
| b
|
| 8
|
|
| 3
|
|
|
|
|
| c
| 5
| 3
| 1
| 7
| 9
|
| 8
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
| 9
|
| i
|
|
| 8
| 2
|
|
|
| 3
| 5
|
backtrack.grid41 → grid42: a2 guess 2 ∈ {2|4}
pending={a2}
deduce.grid42: naked-singles
- b1 is 9 by naked-single.
pending={b1}
- b3 is 4 by naked-single.
pending={b3}
- g3 is 5 by naked-single.
pending={g3}
- h3 is 6 by naked-single.
pending={h3}
- f3 is 9 by naked-single.
pending={f3}
deduce.grid42: hidden-singles
deduce.grid42.rowb. b6 is 2 by hidden-single.
pending={b6}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowe. e4 is 9 by hidden-single.
pending={e4}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowd. d8 is 9 by hidden-single.
pending={d8}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowg. g8 is 2 by hidden-single.
pending={g8}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowf. f5 is 2 by hidden-single.
pending={f5}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowe. e7 is 2 by hidden-single.
pending={e7}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowh. h1 is 2 by hidden-single.
pending={h1}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowi. i2 is 9 by hidden-single.
pending={i2}
deduce.grid42: naked-singles
deduce.grid42: hidden-singles
deduce.grid42.rowi. i7 is 4 by hidden-single.
pending={i7}
deduce.grid42: naked-singles
- d7 is 5 by naked-single.
pending={d7}
- f8 is 6 by naked-single.
pending={f8}
- c8 is 4 by naked-single.
pending={c8}
- a8 is 5 by naked-single.
pending={a8}
- a5 is 8 by naked-single.
pending={a5}
- a4 is 4 by naked-single.
pending={a4}
- b8 is 7 by naked-single.
pending={b8}
- b7 is 1 by naked-single.
pending={b7}
- b9 is 6 by naked-single.
pending={b9}
- b4 is 5 by naked-single.
pending={b4}
- c6 is 6 by naked-single.
pending={c6}
- f9 is 8 by naked-single.
pending={f9}
- e9 is 4 by naked-single.
pending={e9}
- f4 is 1 by naked-single.
pending={f4}
- d5 is 6 by naked-single.
pending={d5}
- d2 is 1 by naked-single.
pending={d2}
- d1 is 8 by naked-single.
pending={d1}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 4 by naked-single.
pending={d6}
- e1 is 7 by naked-single.
pending={e1}
grid42 didn't work: naked-singles ran out of candidates.
…backtrack.grid41 again
backtrack.grid41 → grid43: a2 guess 4 ∈ {2|4}
pending={a2}
deduce.grid43: naked-singles
- a8 is 5 by naked-single.
pending={a8}
- a4 is 8 by naked-single.
pending={a4}
- a5 is 2 by naked-single.
pending={a5}
- b3 is 9 by naked-single.
pending={b3}
- b1 is 2 by naked-single.
pending={b1}
- f3 is 6 by naked-single.
pending={f3}
- f9 is 8 by naked-single.
pending={f9}
- h3 is 5 by naked-single.
pending={h3}
- g3 is 4 by naked-single.
pending={g3}
- g9 is 1 by naked-single.
pending={g9}
- g4 is 5 by naked-single.
pending={g4}
deduce.grid43: hidden-singles
deduce.grid43.rowb. b6 is 5 by hidden-single.
deduce.grid43.rowb. b7 is 1 by hidden-single.
pending={b6, b7}
deduce.grid43: naked-singles
deduce.grid43: hidden-singles
deduce.grid43.rowb. b8 is 7 by hidden-single.
pending={b8}
deduce.grid43: naked-singles
- g8 is 2 by naked-single.
pending={g8}
- f8 is 9 by naked-single.
pending={f8}
- f4 is 1 by naked-single.
pending={f4}
- f2 is 7 by naked-single.
pending={f2}
- f5 is 5 by naked-single.
pending={f5}
- f6 is 2 by naked-single.
pending={f6}
grid43 didn't work: naked-singles ran out of candidates.
…backtrack.grid41 again
grid41 didn't work: exhaustive search revealed no solution.
…backtrack.grid13 again
grid13 didn't work: exhaustive search revealed no solution.
…backtrack.grid12 again
backtrack.grid12 → grid44: a9 guess 4 ∈ {3|4}
pending={a9}
deduce.grid44: naked-singles
- g9 is 1 by naked-single.
pending={g9}
- b9 is 6 by naked-single.
pending={b9}
- c8 is 3 by naked-single.
pending={c8}
deduce.grid44: hidden-singles
deduce.grid44.rowb. b7 is 1 by hidden-single.
pending={b7}
deduce.grid44: naked-singles
deduce.grid44: hidden-singles
deduce.grid44.rowi. i6 is 3 by hidden-single.
pending={i6}
deduce.grid44: naked-singles
deduce.grid44: hidden-singles
deduce.grid44.rowh. h9 is 3 by hidden-single.
pending={h9}
deduce.grid44: naked-singles
deduce.grid44: hidden-singles
deduce.grid44.col7. d7 is 5 by hidden-single.
pending={d7}
deduce.grid44: naked-singles
deduce.grid44: hidden-singles
deduce.grid44.box9. i8 is 9 by hidden-single.
pending={i8}
deduce.grid44: naked-singles
deduce.grid44: hidden-singles
deduce.grid44: naked-pairs
two's heap=e7 {2|4}, f8 {2|6}, i1 {1|7}, d8 {4|6}, c6 {4|6}, g4 {5|8}, h7 {2|7}, i7 {4|7}, b8 {5|7}, e9 {8|9}, c2 {4|9}, f9 {8|9}, c5 {6|9}, a8 {5|7}, a3 {3|7}, a4 {5|8}.
Naked-pair {5|7} in cells {a8, b8} contained within {col8, box3}, updating cells {d8, f8, g8}:
Naked-pair {5|8} in cells {a4, g4} contained within {col4}, updating cells {b4, d4, e4, f4, h4}:
- b4: {4|5|9} → {4|9}.
- d4: {1|3|4|6|8|9} → {1|3|4|6|9}.
- e4: {3|4|6|8|9} → {3|4|6|9}.
- f4: {1|5|6|8|9} → {1|6|9}.
- h4: {1|5|6} → {1|6}.
Naked-pair {8|9} in cells {e9, f9} contained within {col9, box6}, updating cells {d8, e7, f8}:
grid44
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
| 4
|
| b
|
| 8
|
|
| 3
|
| 1
|
| 6
|
| c
| 5
|
| 1
| 7
|
|
| 8
| 3
| 2
|
| d
|
|
| 2
|
|
|
| 5
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
| 1
|
| h
|
|
|
|
| 4
|
|
| 8
| 3
|
| i
|
|
| 8
| 2
|
| 3
|
| 9
| 5
|
backtrack.grid44 → grid45: a3 guess 3 ∈ {3|7}
pending={a3}
deduce.grid45: naked-singles
deduce.grid45: hidden-singles
deduce.grid45.rowe. e4 is 3 by hidden-single.
pending={e4}
deduce.grid45: naked-singles
deduce.grid45: hidden-singles
deduce.grid45.rowd. d2 is 3 by hidden-single.
pending={d2}
deduce.grid45: naked-singles
deduce.grid45: hidden-singles
deduce.grid45: naked-pairs
two's heap=e7 {2|4}, h4 {1|6}, g8 {2|4}, c6 {4|6}, d8 {4|6}, a8 {5|7}, f8 {2|6}, a2 {2|7}, i1 {1|7}, a4 {5|8}, e9 {8|9}, c2 {4|9}, f9 {8|9}, c5 {6|9}, g4 {5|8}, b4 {4|9}, h7 {2|7}, b8 {5|7}, i7 {4|7}.
Naked-pair {5|7} in cells {a8, b8} contained within {col8, box3}, updating cells {d8, f8, g8}:
Naked-pair {5|8} in cells {a4, g4} contained within {col4}, updating cells {b4, d4, f4, h4}:
Naked-pair {8|9} in cells {e9, f9} contained within {col9, box6}, updating cells {d8, e7, f8}:
grid45
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
| 3
|
|
| 1
| 9
|
| 4
|
| b
|
| 8
|
|
| 3
|
| 1
|
| 6
|
| c
| 5
|
| 1
| 7
|
|
| 8
| 3
| 2
|
| d
|
| 3
| 2
|
|
|
| 5
|
| 7
|
| e
|
| 5
|
| 3
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
| 1
|
| h
|
|
|
|
| 4
|
|
| 8
| 3
|
| i
|
|
| 8
| 2
|
| 3
|
| 9
| 5
|
backtrack.grid45 → grid46: a2 guess 2 ∈ {2|7}
pending={a2}
deduce.grid46: naked-singles
deduce.grid46: hidden-singles
deduce.grid46.rowa. a8 is 7 by hidden-single.
pending={a8}
deduce.grid46: naked-singles
- b8 is 5 by naked-single.
pending={b8}
deduce.grid46: hidden-singles
deduce.grid46.rowb. b6 is 2 by hidden-single.
pending={b6}
deduce.grid46: naked-singles
deduce.grid46: hidden-singles
deduce.grid46.rowg. g8 is 2 by hidden-single.
pending={g8}
deduce.grid46: naked-singles
- f8 is 6 by naked-single.
pending={f8}
- d8 is 4 by naked-single.
pending={d8}
- e7 is 2 by naked-single.
pending={e7}
- h7 is 7 by naked-single.
pending={h7}
- i7 is 4 by naked-single.
pending={i7}
deduce.grid46: hidden-singles
deduce.grid46.rowe. e6 is 4 by hidden-single.
pending={e6}
deduce.grid46: naked-singles
- c6 is 6 by naked-single.
pending={c6}
- c5 is 9 by naked-single.
pending={c5}
- b4 is 4 by naked-single.
pending={b4}
- c2 is 4 by naked-single.
pending={c2}
- d6 is 8 by naked-single.
pending={d6}
- g2 is 7 by naked-single.
pending={g2}
- h6 is 5 by naked-single.
pending={h6}
- f6 is 7 by naked-single.
pending={f6}
- e5 is 6 by naked-single.
pending={e5}
- d5 is 1 by naked-single.
pending={d5}
- d1 is 9 by naked-single.
pending={d1}
- b1 is 7 by naked-single.
pending={b1}
- b3 is 9 by naked-single.
pending={b3}
grid46 didn't work: naked-singles ran out of candidates.
…backtrack.grid45 again
backtrack.grid45 → grid47: a2 guess 7 ∈ {2|7}
pending={a2}
deduce.grid47: naked-singles
- a8 is 5 by naked-single.
pending={a8}
- a4 is 8 by naked-single.
pending={a4}
- a5 is 2 by naked-single.
pending={a5}
- b8 is 7 by naked-single.
pending={b8}
- g4 is 5 by naked-single.
pending={g4}
deduce.grid47: hidden-singles
deduce.grid47.rowb. b1 is 2 by hidden-single.
deduce.grid47.rowb. b6 is 5 by hidden-single.
pending={b1, b6}
deduce.grid47: naked-singles
deduce.grid47: hidden-singles
deduce.grid47.rowf. f5 is 5 by hidden-single.
pending={f5}
deduce.grid47: naked-singles
deduce.grid47: hidden-singles
deduce.grid47.rowg. g5 is 8 by hidden-single.
pending={g5}
deduce.grid47: naked-singles
deduce.grid47: hidden-singles
deduce.grid47.rowg. g3 is 7 by hidden-single.
pending={g3}
deduce.grid47: naked-singles
- i1 is 1 by naked-single.
pending={i1}
- h1 is 9 by naked-single.
pending={h1}
- d1 is 8 by naked-single.
pending={d1}
- e1 is 7 by naked-single.
pending={e1}
deduce.grid47: hidden-singles
deduce.grid47.rowf. f6 is 7 by hidden-single.
pending={f6}
deduce.grid47: naked-singles
- h6 is 6 by naked-single.
pending={h6}
- c6 is 4 by naked-single.
pending={c6}
- b4 is 9 by naked-single.
pending={b4}
- b3 is 4 by naked-single.
pending={b3}
- c2 is 9 by naked-single.
pending={c2}
- c5 is 6 by naked-single.
pending={c5}
grid47 didn't work: naked-singles ran out of candidates.
…backtrack.grid45 again
grid45 didn't work: exhaustive search revealed no solution.
…backtrack.grid44 again
backtrack.grid44 → grid48: a3 guess 7 ∈ {3|7}
pending={a3}
deduce.grid48: naked-singles
- a8 is 5 by naked-single.
pending={a8}
- a4 is 8 by naked-single.
pending={a4}
- a5 is 2 by naked-single.
pending={a5}
- a2 is 3 by naked-single.
pending={a2}
- b8 is 7 by naked-single.
pending={b8}
- g4 is 5 by naked-single.
pending={g4}
- g3 is 4 by naked-single.
pending={g3}
- b3 is 9 by naked-single.
pending={b3}
- b1 is 2 by naked-single.
pending={b1}
- b4 is 4 by naked-single.
pending={b4}
- b6 is 5 by naked-single.
pending={b6}
- c2 is 4 by naked-single.
pending={c2}
- c6 is 6 by naked-single.
pending={c6}
- c5 is 9 by naked-single.
pending={c5}
- f3 is 6 by naked-single.
pending={f3}
- e3 is 3 by naked-single.
pending={e3}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 4 by naked-single.
pending={e7}
- d8 is 6 by naked-single.
pending={d8}
grid48 didn't work: naked-singles ran out of candidates.
…backtrack.grid44 again
grid44 didn't work: exhaustive search revealed no solution.
…backtrack.grid12 again
grid12 didn't work: exhaustive search revealed no solution.
…backtrack.grid2 again
grid2 didn't work: exhaustive search revealed no solution.
…backtrack.grid1 again
backtrack.grid1 → grid49: c1 guess 9 ∈ {5|9}
pending={c1}
deduce.grid49: naked-singles
deduce.grid49: hidden-singles
deduce.grid49.rowb. b4 is 9 by hidden-single.
pending={b4}
deduce.grid49: naked-singles
deduce.grid49: hidden-singles
deduce.grid49: naked-pairs
two's heap=g9 {1|4}, c2 {3|4}, e1 {7|8}, d1 {1|8}, i1 {1|7}.
grid49
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
| 9
| 3
|
|
|
|
|
| c
| 9
|
| 1
| 7
|
|
|
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
|
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
|
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid49 → grid50: c2 guess 3 ∈ {3|4}
pending={c2}
deduce.grid50: naked-singles
deduce.grid50: hidden-singles
deduce.grid50.col3. e3 is 3 by hidden-single.
pending={e3}
deduce.grid50: naked-singles
deduce.grid50: hidden-singles
deduce.grid50: naked-pairs
two's heap=g9 {1|4}, i1 {1|7}, d1 {1|8}, e1 {7|8}.
grid50
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
| 9
| 3
|
|
|
|
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
|
|
| 2
|
|
|
|
|
| 7
|
| e
|
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
|
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid50 → grid51: d1 guess 1 ∈ {1|8}
pending={d1}
deduce.grid51: naked-singles
- i1 is 7 by naked-single.
pending={i1}
- e1 is 8 by naked-single.
pending={e1}
deduce.grid51: hidden-singles
deduce.grid51: naked-pairs
two's heap=g9 {1|4}, i7 {1|4}, e7 {2|4}, i5 {1|6}, b1 {2|5}, e4 {4|6}, h1 {2|5}, d2 {6|9}, i6 {3|6}, g3 {4|5}.
Naked-pair {1|4} in cells {g9, i7} contained within {box9}, updating cells {g8, h7, h9, i8}:
- g8: {2|4|7} → {2|7}.
- h7: {1|2|7} → {2|7}.
- h9: {1|3|9} → {3|9}.
- i8: {3|4|9} → {3|9}.
grid51
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
| 9
| 3
|
|
|
|
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 1
|
| 2
|
|
|
|
|
| 7
|
| e
| 8
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
| 7
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid51 → grid52: b1 guess 2 ∈ {2|5}
pending={b1}
deduce.grid52: naked-singles
- h1 is 5 by naked-single.
pending={h1}
- g3 is 4 by naked-single.
pending={g3}
- g9 is 1 by naked-single.
pending={g9}
- g2 is 2 by naked-single.
pending={g2}
- g8 is 7 by naked-single.
pending={g8}
- h7 is 2 by naked-single.
pending={h7}
- e7 is 4 by naked-single.
pending={e7}
- e4 is 6 by naked-single.
pending={e4}
- e9 is 9 by naked-single.
pending={e9}
- h9 is 3 by naked-single.
pending={h9}
- h4 is 1 by naked-single.
pending={h4}
- i5 is 6 by naked-single.
pending={i5}
- h6 is 7 by naked-single.
pending={h6}
- e6 is 2 by naked-single.
pending={e6}
- e5 is 7 by naked-single.
pending={e5}
- i6 is 3 by naked-single.
pending={i6}
grid52 didn't work: naked-singles ran out of candidates.
…backtrack.grid51 again
backtrack.grid51 → grid53: b1 guess 5 ∈ {2|5}
pending={b1}
deduce.grid53: naked-singles
- h1 is 2 by naked-single.
pending={h1}
- h7 is 7 by naked-single.
pending={h7}
- g8 is 2 by naked-single.
pending={g8}
deduce.grid53: hidden-singles
deduce.grid53.rowb. b6 is 2 by hidden-single.
pending={b6}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowa. a2 is 2 by hidden-single.
pending={a2}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowf. f5 is 2 by hidden-single.
pending={f5}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowe. e7 is 2 by hidden-single.
pending={e7}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowf. f4 is 1 by hidden-single.
pending={f4}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowg. g5 is 7 by hidden-single.
pending={g5}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowe. e6 is 7 by hidden-single.
pending={e6}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowg. g4 is 8 by hidden-single.
pending={g4}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowg. g3 is 5 by hidden-single.
pending={g3}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.rowh. h2 is 1 by hidden-single.
pending={h2}
deduce.grid53: naked-singles
- g2 is 4 by naked-single.
pending={g2}
- g9 is 1 by naked-single.
pending={g9}
- i7 is 4 by naked-single.
pending={i7}
- b7 is 1 by naked-single.
pending={b7}
deduce.grid53: hidden-singles
deduce.grid53.rowi. i5 is 1 by hidden-single.
pending={i5}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53.col2. f2 is 7 by hidden-single.
pending={f2}
deduce.grid53: naked-singles
deduce.grid53: hidden-singles
deduce.grid53: naked-pairs
two's heap=a4 {4|5}, b9 {4|6}, i6 {3|6}, e4 {4|6}, a3 {4|7}, c7 {5|8}, a5 {5|8}, d7 {5|8}, b3 {4|7}, e5 {6|9}, f3 {6|9}, h3 {6|9}, h9 {3|9}, i2 {6|9}, d2 {6|9}, i8 {3|9}.
Naked-pair {4|7} in cells {a3, b3} contained within {col3, box1}, updating cells {f3, h3}:
Naked-pair {6|9} in cells {d2, e5, f3, h3, i2} contained within {col2, col3, box4, box7}, updating cells {a3, b3}:
grid53
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
|
|
|
| 1
| 9
|
|
|
| b
| 5
| 8
|
| 9
| 3
| 2
| 1
|
|
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 1
|
| 2
|
|
|
|
|
| 7
|
| e
| 8
| 5
| 3
|
|
| 7
| 2
| 1
|
|
| f
| 4
| 7
|
| 1
| 2
|
| 3
|
|
|
| g
| 3
| 4
| 5
| 8
| 7
| 9
| 6
| 2
| 1
|
| h
| 2
| 1
|
|
| 4
|
| 7
| 8
|
|
| i
| 7
|
| 8
| 2
| 1
|
| 4
|
| 5
|
backtrack.grid53 → grid54: a3 guess 4 ∈ {4|7}
pending={a3}
deduce.grid54: naked-singles
- a4 is 5 by naked-single.
pending={a4}
- a5 is 8 by naked-single.
pending={a5}
- a9 is 3 by naked-single.
pending={a9}
- a8 is 7 by naked-single.
pending={a8}
- b3 is 7 by naked-single.
pending={b3}
- c5 is 6 by naked-single.
pending={c5}
- c6 is 4 by naked-single.
pending={c6}
- c8 is 5 by naked-single.
pending={c8}
- c7 is 8 by naked-single.
pending={c7}
- d7 is 5 by naked-single.
pending={d7}
- d5 is 9 by naked-single.
pending={d5}
- d2 is 6 by naked-single.
pending={d2}
- d8 is 4 by naked-single.
pending={d8}
- b8 is 6 by naked-single.
pending={b8}
- b9 is 4 by naked-single.
pending={b9}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 8 by naked-single.
pending={d6}
grid54 didn't work: naked-singles ran out of candidates.
…backtrack.grid53 again
backtrack.grid53 → grid55: a3 guess 7 ∈ {4|7}
pending={a3}
deduce.grid55: naked-singles
- b3 is 4 by naked-single.
pending={b3}
- b9 is 6 by naked-single.
pending={b9}
- b8 is 7 by naked-single.
pending={b8}
deduce.grid55: hidden-singles
deduce.grid55: naked-pairs
two's heap=a4 {4|5}, c8 {4|5}, i6 {3|6}, a5 {5|8}, d2 {6|9}, d7 {5|8}, e4 {4|6}, i8 {3|9}, e9 {4|9}, f3 {6|9}, f9 {8|9}, h3 {6|9}, h9 {3|9}, i2 {6|9}, c7 {5|8}, e5 {6|9}.
grid55
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 7
|
|
| 1
| 9
|
|
|
| b
| 5
| 8
| 4
| 9
| 3
| 2
| 1
| 7
| 6
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 1
|
| 2
|
|
|
|
|
| 7
|
| e
| 8
| 5
| 3
|
|
| 7
| 2
| 1
|
|
| f
| 4
| 7
|
| 1
| 2
|
| 3
|
|
|
| g
| 3
| 4
| 5
| 8
| 7
| 9
| 6
| 2
| 1
|
| h
| 2
| 1
|
|
| 4
|
| 7
| 8
|
|
| i
| 7
|
| 8
| 2
| 1
|
| 4
|
| 5
|
backtrack.grid55 → grid56: a4 guess 4 ∈ {4|5}
pending={a4}
deduce.grid56: naked-singles
- e4 is 6 by naked-single.
pending={e4}
- e5 is 9 by naked-single.
pending={e5}
- e9 is 4 by naked-single.
pending={e9}
deduce.grid56: hidden-singles
deduce.grid56.rowc. c8 is 4 by hidden-single.
pending={c8}
deduce.grid56: naked-singles
deduce.grid56: hidden-singles
deduce.grid56.rowd. d6 is 4 by hidden-single.
pending={d6}
deduce.grid56: naked-singles
deduce.grid56: hidden-singles
deduce.grid56.rowd. d4 is 3 by hidden-single.
pending={d4}
deduce.grid56: naked-singles
- h4 is 5 by naked-single.
pending={h4}
deduce.grid56: hidden-singles
deduce.grid56.col5. c5 is 6 by hidden-single.
pending={c5}
deduce.grid56: naked-singles
deduce.grid56: hidden-singles
deduce.grid56: naked-pairs
two's heap=a8 {3|5}, i6 {3|6}, h6 {3|6}, a5 {5|8}, c7 {5|8}, a9 {3|8}, d5 {5|8}, c6 {5|8}, f3 {6|9}, f6 {5|8}, f9 {8|9}, h3 {6|9}, d2 {6|9}, h9 {3|9}, i2 {6|9}, d7 {5|8}, i8 {3|9}.
Naked-pair {3|6} in cells {h6, i6} contained within {col6, box8}, updating cells {c6, f6}:
Naked-pair {5|8} in cells {a5, c6, c7, d5, d7, f6} contained within {rowc, rowd, col5, col6, col7, box2, box5}, updating cells {d2, d8, h6, i6}:
grid56
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 2
| 7
| 4
|
| 1
| 9
|
|
|
| b
| 5
| 8
| 4
| 9
| 3
| 2
| 1
| 7
| 6
|
| c
| 9
| 3
| 1
| 7
| 6
|
|
| 4
| 2
|
| d
| 1
|
| 2
| 3
|
| 4
|
|
| 7
|
| e
| 8
| 5
| 3
| 6
| 9
| 7
| 2
| 1
| 4
|
| f
| 4
| 7
|
| 1
| 2
|
| 3
|
|
|
| g
| 3
| 4
| 5
| 8
| 7
| 9
| 6
| 2
| 1
|
| h
| 2
| 1
|
| 5
| 4
|
| 7
| 8
|
|
| i
| 7
|
| 8
| 2
| 1
|
| 4
|
| 5
|
backtrack.grid56 → grid57: a5 guess 5 ∈ {5|8}
pending={a5}
deduce.grid57: naked-singles
- a8 is 3 by naked-single.
pending={a8}
- a9 is 8 by naked-single.
pending={a9}
- c6 is 8 by naked-single.
pending={c6}
- c7 is 5 by naked-single.
pending={c7}
- d5 is 8 by naked-single.
pending={d5}
grid57 didn't work: naked-singles ran out of candidates.
…backtrack.grid56 again
backtrack.grid56 → grid58: a5 guess 8 ∈ {5|8}
pending={a5}
deduce.grid58: naked-singles
- a9 is 3 by naked-single.
pending={a9}
- a8 is 5 by naked-single.
pending={a8}
- c6 is 5 by naked-single.
pending={c6}
- c7 is 8 by naked-single.
pending={c7}
- d5 is 5 by naked-single.
pending={d5}
grid58 didn't work: naked-singles ran out of candidates.
…backtrack.grid56 again
grid56 didn't work: exhaustive search revealed no solution.
…backtrack.grid55 again
backtrack.grid55 → grid59: a4 guess 5 ∈ {4|5}
pending={a4}
deduce.grid59: naked-singles
- a5 is 8 by naked-single.
pending={a5}
- c5 is 6 by naked-single.
pending={c5}
- c6 is 4 by naked-single.
pending={c6}
- c8 is 5 by naked-single.
pending={c8}
- c7 is 8 by naked-single.
pending={c7}
- d7 is 5 by naked-single.
pending={d7}
- d5 is 9 by naked-single.
pending={d5}
- d2 is 6 by naked-single.
pending={d2}
- d8 is 4 by naked-single.
pending={d8}
- a8 is 3 by naked-single.
pending={a8}
- a9 is 4 by naked-single.
pending={a9}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 8 by naked-single.
pending={d6}
grid59 didn't work: naked-singles ran out of candidates.
…backtrack.grid55 again
grid55 didn't work: exhaustive search revealed no solution.
…backtrack.grid53 again
grid53 didn't work: exhaustive search revealed no solution.
…backtrack.grid51 again
grid51 didn't work: exhaustive search revealed no solution.
…backtrack.grid50 again
backtrack.grid50 → grid60: d1 guess 8 ∈ {1|8}
pending={d1}
deduce.grid60: naked-singles
- e1 is 7 by naked-single.
pending={e1}
- i1 is 1 by naked-single.
pending={i1}
deduce.grid60: hidden-singles
deduce.grid60: naked-pairs
two's heap=g9 {1|4}, b1 {2|5}, i7 {4|7}, d7 {4|5}, h1 {2|5}, f3 {6|9}, i5 {6|7}.
grid60
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
|
| 1
| 9
|
|
|
| b
|
| 8
|
| 9
| 3
|
|
|
|
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 8
|
| 2
|
|
|
|
|
| 7
|
| e
| 7
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
|
|
|
|
| 4
|
|
| 8
|
|
| i
| 1
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid60 → grid61: b1 guess 2 ∈ {2|5}
pending={b1}
deduce.grid61: naked-singles
- h1 is 5 by naked-single.
pending={h1}
deduce.grid61: hidden-singles
deduce.grid61.rowa. a5 is 2 by hidden-single.
pending={a5}
deduce.grid61: naked-singles
deduce.grid61: hidden-singles
deduce.grid61: naked-pairs
two's heap=g9 {1|4}, d7 {4|5}, i7 {4|7}, g3 {4|7}, a2 {4|7}, f3 {6|9}, i5 {6|7}.
grid61
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
|
|
|
| 2
| 1
| 9
|
|
|
| b
| 2
| 8
|
| 9
| 3
|
|
|
|
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 8
|
| 2
|
|
|
|
|
| 7
|
| e
| 7
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
|
|
|
| 9
| 6
|
|
|
| h
| 5
|
|
|
| 4
|
|
| 8
|
|
| i
| 1
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid61 → grid62: a2 guess 4 ∈ {4|7}
pending={a2}
deduce.grid62: naked-singles
deduce.grid62: hidden-singles
deduce.grid62.col3. g3 is 4 by hidden-single.
pending={g3}
deduce.grid62: naked-singles
- g9 is 1 by naked-single.
pending={g9}
deduce.grid62: hidden-singles
deduce.grid62.rowb. b7 is 1 by hidden-single.
pending={b7}
deduce.grid62: naked-singles
deduce.grid62: hidden-singles
deduce.grid62.rowh. h4 is 1 by hidden-single.
pending={h4}
deduce.grid62: naked-singles
deduce.grid62: hidden-singles
deduce.grid62.col4. d4 is 3 by hidden-single.
pending={d4}
deduce.grid62: naked-singles
deduce.grid62: hidden-singles
deduce.grid62.col4. e4 is 4 by hidden-single.
pending={e4}
deduce.grid62: naked-singles
deduce.grid62: hidden-singles
deduce.grid62.col4. f4 is 6 by hidden-single.
pending={f4}
deduce.grid62: naked-singles
- d6 is 5 by naked-single.
pending={d6}
- d7 is 4 by naked-single.
pending={d7}
- f3 is 9 by naked-single.
pending={f3}
- f2 is 1 by naked-single.
pending={f2}
- d2 is 6 by naked-single.
pending={d2}
- d8 is 9 by naked-single.
pending={d8}
- d5 is 1 by naked-single.
pending={d5}
- f9 is 8 by naked-single.
pending={f9}
- a9 is 3 by naked-single.
pending={a9}
- e7 is 2 by naked-single.
pending={e7}
- e6 is 8 by naked-single.
pending={e6}
- e5 is 9 by naked-single.
pending={e5}
- e9 is 6 by naked-single.
pending={e9}
- b9 is 4 by naked-single.
pending={b9}
- b6 is 6 by naked-single.
pending={b6}
- c6 is 4 by naked-single.
pending={c6}
- f5 is 7 by naked-single.
pending={f5}
- f6 is 2 by naked-single.
pending={f6}
- f8 is 5 by naked-single.
pending={f8}
- a8 is 7 by naked-single.
pending={a8}
- a3 is 5 by naked-single.
pending={a3}
- a4 is 8 by naked-single.
pending={a4}
- b3 is 7 by naked-single.
pending={b3}
grid62 didn't work: naked-singles ran out of candidates.
…backtrack.grid61 again
backtrack.grid61 → grid63: a2 guess 7 ∈ {4|7}
pending={a2}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63: naked-pairs
two's heap=g9 {1|4}, a3 {4|5}, g2 {2|4}, i7 {4|7}, b3 {4|5}, g3 {4|7}, d7 {4|5}, f3 {6|9}, i5 {6|7}.
Naked-pair {4|5} in cells {a3, b3, d7} contained within {col3, box1}, updating cells {f3, g3, h3}:
pending={g3}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63: naked-pairs
two's heap=g9 {1|4}, a3 {4|5}, g2 {2|4}, i5 {6|7}, b3 {4|5}, d7 {4|5}, g8 {2|4}, h3 {6|9}, f3 {6|9}, i7 {4|7}.
Naked-pair {2|4} in cells {g2, g8} contained within {rowg}, updating cells {g4, g5, g9}:
Naked-pair {4|5} in cells {a3, b3, d7} contained within {col3, box1}, updating cells {f3, h3}:
Naked-pair {6|9} in cells {f3, h3} contained within {col3}, updating cells {a3, b3}:
pending={g9}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63.rowb. b7 is 1 by hidden-single.
pending={b7}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63.rowb. b8 is 7 by hidden-single.
pending={b8}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63.rowh. h4 is 1 by hidden-single.
pending={h4}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63.col4. d4 is 3 by hidden-single.
pending={d4}
deduce.grid63: naked-singles
deduce.grid63: hidden-singles
deduce.grid63: naked-pairs
two's heap=g2 {2|4}, g8 {2|4}, a3 {4|5}, b3 {4|5}, h7 {2|7}, b9 {4|6}, i7 {4|7}, g5 {5|8}, d7 {4|5}, h3 {6|9}, f3 {6|9}, h9 {3|9}, i5 {6|7}, g4 {5|8}.
Naked-pair {2|4} in cells {g2, g8} contained within {rowg}, updating cells {g4, g5}:
Naked-pair {4|5} in cells {a3, b3, d7} contained within {col3, box1}, updating cells {f3, h3}:
Naked-pair {5|8} in cells {g4, g5} contained within {rowg, box8}, updating cells {g2, g8, h6, i5, i6}:
Naked-pair {6|9} in cells {f3, h3} contained within {col3}, updating cells {a3, b3}:
grid63
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 7
|
|
| 2
| 1
| 9
|
|
|
| b
| 2
| 8
|
| 9
| 3
|
| 1
| 7
|
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 8
|
| 2
| 3
|
|
|
|
| 7
|
| e
| 7
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
| 7
|
|
| 9
| 6
|
| 1
|
| h
| 5
|
|
| 1
| 4
|
|
| 8
|
|
| i
| 1
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid63 → grid64: a3 guess 4 ∈ {4|5}
pending={a3}
deduce.grid64: naked-singles
- b3 is 5 by naked-single.
pending={b3}
deduce.grid64: hidden-singles
deduce.grid64.col4. e4 is 4 by hidden-single.
pending={e4}
deduce.grid64: naked-singles
deduce.grid64: hidden-singles
deduce.grid64.col4. f4 is 6 by hidden-single.
pending={f4}
deduce.grid64: naked-singles
- d6 is 5 by naked-single.
pending={d6}
- d7 is 4 by naked-single.
pending={d7}
- f3 is 9 by naked-single.
pending={f3}
- f2 is 1 by naked-single.
pending={f2}
- d2 is 6 by naked-single.
pending={d2}
- d8 is 9 by naked-single.
pending={d8}
- d5 is 1 by naked-single.
pending={d5}
- f9 is 8 by naked-single.
pending={f9}
- a9 is 3 by naked-single.
pending={a9}
- a8 is 5 by naked-single.
pending={a8}
- a4 is 8 by naked-single.
pending={a4}
- c7 is 8 by naked-single.
pending={c7}
- e7 is 2 by naked-single.
pending={e7}
- e6 is 8 by naked-single.
pending={e6}
- e5 is 9 by naked-single.
pending={e5}
- e9 is 6 by naked-single.
pending={e9}
- b9 is 4 by naked-single.
pending={b9}
- b6 is 6 by naked-single.
pending={b6}
- c5 is 5 by naked-single.
pending={c5}
- c6 is 4 by naked-single.
pending={c6}
- c8 is 6 by naked-single.
pending={c8}
- f5 is 7 by naked-single.
pending={f5}
- f6 is 2 by naked-single.
pending={f6}
grid64 didn't work: naked-singles ran out of candidates.
…backtrack.grid63 again
backtrack.grid63 → grid65: a3 guess 5 ∈ {4|5}
pending={a3}
deduce.grid65: naked-singles
- b3 is 4 by naked-single.
pending={b3}
- b9 is 6 by naked-single.
pending={b9}
- b6 is 5 by naked-single.
pending={b6}
deduce.grid65: hidden-singles
deduce.grid65: naked-pairs
two's heap=g2 {2|4}, a8 {3|4}, g8 {2|4}, c8 {4|5}, d6 {4|6}, d7 {4|5}, h7 {2|7}, i7 {4|7}, a4 {4|8}, g4 {5|8}, g5 {5|8}, c5 {6|8}, h3 {6|9}, f3 {6|9}, h9 {3|9}, f9 {8|9}, i5 {6|7}.
Naked-pair {2|4} in cells {g2, g8} contained within {rowg}, updating cells {g4, g5}:
Naked-pair {5|8} in cells {g4, g5} contained within {rowg, box8}, updating cells {g2, g8, h6, i5, i6}:
grid65
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 7
| 5
|
| 2
| 1
| 9
|
|
|
| b
| 2
| 8
| 4
| 9
| 3
| 5
| 1
| 7
| 6
|
| c
| 9
| 3
| 1
| 7
|
|
|
|
| 2
|
| d
| 8
|
| 2
| 3
|
|
|
|
| 7
|
| e
| 7
| 5
| 3
|
|
|
|
| 1
|
|
| f
| 4
|
|
|
|
|
| 3
|
|
|
| g
| 3
|
| 7
|
|
| 9
| 6
|
| 1
|
| h
| 5
|
|
| 1
| 4
|
|
| 8
|
|
| i
| 1
|
| 8
| 2
|
|
|
|
| 5
|
backtrack.grid65 → grid66: a4 guess 4 ∈ {4|8}
pending={a4}
deduce.grid66: naked-singles
- a8 is 3 by naked-single.
pending={a8}
- a9 is 8 by naked-single.
pending={a9}
- f9 is 9 by naked-single.
pending={f9}
- e9 is 4 by naked-single.
pending={e9}
- d7 is 5 by naked-single.
pending={d7}
- c7 is 4 by naked-single.
pending={c7}
- c8 is 5 by naked-single.
pending={c8}
- d8 is 6 by naked-single.
pending={d8}
- d6 is 4 by naked-single.
pending={d6}
- f3 is 6 by naked-single.
pending={f3}
- f2 is 1 by naked-single.
pending={f2}
- d2 is 9 by naked-single.
pending={d2}
- d5 is 1 by naked-single.
pending={d5}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 8 by naked-single.
pending={e7}
- e4 is 6 by naked-single.
pending={e4}
- e5 is 9 by naked-single.
pending={e5}
- e6 is 2 by naked-single.
pending={e6}
- g8 is 4 by naked-single.
pending={g8}
- g2 is 2 by naked-single.
pending={g2}
- h2 is 6 by naked-single.
pending={h2}
- h3 is 9 by naked-single.
pending={h3}
- h9 is 3 by naked-single.
pending={h9}
- h6 is 7 by naked-single.
pending={h6}
- f6 is 8 by naked-single.
pending={f6}
- c6 is 6 by naked-single.
pending={c6}
- c5 is 8 by naked-single.
pending={c5}
- f4 is 5 by naked-single.
pending={f4}
- f5 is 7 by naked-single.
pending={f5}
- g4 is 8 by naked-single.
pending={g4}
- g5 is 5 by naked-single.
pending={g5}
- h7 is 2 by naked-single.
pending={h7}
- i2 is 4 by naked-single.
pending={i2}
- i5 is 6 by naked-single.
pending={i5}
- i6 is 3 by naked-single.
pending={i6}
- i7 is 7 by naked-single.
pending={i7}
- i8 is 9 by naked-single.
pending={i8}
deduce.grid66. Solved.
grid66
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 6
| 7
| 5
| 4
| 2
| 1
| 9
| 3
| 8
|
| b
| 2
| 8
| 4
| 9
| 3
| 5
| 1
| 7
| 6
|
| c
| 9
| 3
| 1
| 7
| 8
| 6
| 4
| 5
| 2
|
| d
| 8
| 9
| 2
| 3
| 1
| 4
| 5
| 6
| 7
|
| e
| 7
| 5
| 3
| 6
| 9
| 2
| 8
| 1
| 4
|
| f
| 4
| 1
| 6
| 5
| 7
| 8
| 3
| 2
| 9
|
| g
| 3
| 2
| 7
| 8
| 5
| 9
| 6
| 4
| 1
|
| h
| 5
| 6
| 9
| 1
| 4
| 7
| 2
| 8
| 3
|
| i
| 1
| 4
| 8
| 2
| 6
| 3
| 7
| 9
| 5
|
grid66. Copying solution to raw grid.